package com.wash.shoes.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wash.shoes.domain.dto.*;
import com.wash.shoes.domain.vo.OrderDetailVo;
import com.wash.shoes.domain.vo.ShopStsXcxVo;
import com.wash.shoes.domain.vo.StsAllInfo;
import com.wash.shoes.entity.OrderPo;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 洗护订单 服务类
 * </p>
 *
 * @author ljg
 * @since 2024-08-29
 */
public interface OrderService extends IService<OrderPo> {
    /**
     * 抖音订单入库 插入核销记录
     *
     * @param orderPo
     * @return
     */
    boolean orderIn(OrderPo orderPo);

    /**
     * @author lijianguo
     * @Date 29/08/2024
     * 订单的列表
     **/
    Page<OrderDetailVo> pageList(OrderPageListDto orderPo);

    /**
     * @author lijianguo
     * @Date 03/09/2024
     * 订单号，查询详情
     **/
    OrderPo getByOrderNo(String orderNo);

    /**
     * @author lijianguo
     * @Date 11/09/2024
     * 入库记录
     **/
    Page<OrderDetailVo> checkInList(/*String searchString*/CheckInQuery checkInQuery);

    /**
     * @author lijianguo
     * @Date 11/09/2024
     * 订单的数量
     **/
    HashMap orderCount();

    void setBillCodeName(List<OrderDetailVo> dataList);

    void setGoodSNames(List<OrderDetailVo> dataList);

    /**
     * @author lijianguo
     * @Date 11/09/2024
     * 出库
     **/
    Page<OrderDetailVo> checkOutList(CheckOutDto checkOutDto);

    /**
     * @author lijianguo
     * @Date 15/09/2024
     * mt 的取消预定
     **/
    Integer cancelByMtOrder(String mtOrderId);

    /**
     * @author lijianguo
     * @Date 16/09/2024
     * mt的预约单查询
     **/
    OrderPo getByMtOrderId(String mtOrderId);


    /**
     * 根据jd物流单号查询订单信息
     *
     * @param waybillCode
     * @return OrderPo
     */
    OrderPo getByJdWayBillCode(String waybillCode);

    /**
     * @author lijianguo
     * @Date 21/09/2024
     * 请输入方法的简介
     **/
    Map firstCount(String beginDate);

    /**
     * @author lijianguo
     * @Date 28/09/2024
     * 请输入方法的简介
     **/
    Integer todayCheckInNum();

    /**
     * @author lijianguo
     * @Date 23/10/2024
     * 请输入方法的简介
     **/
    List<OrderPo> sendShoeOrder(Integer status, String time);

    /**
     * 移动端的用户的订单的查询
     *
     * @param orderPo
     * @return
     */
    Page<OrderDetailVo> userOrderList(MobileOrderListDto orderPo);

    /**
     * 处理以前的数据
     *
     * @param phone
     * @param customerId
     */
    void updateOrderToUser(String phone, String customerId);


    /**
     * 处理小程序的订单
     *
     * @param orderId 电话
     * @param remark  备注
     */
    OrderPo cancel(String orderId, String remark);


    /**
     * 订单的统计
     *
     * @param mobileOrderListDto
     * @return
     */
    HashMap<String, Integer> userOrderNum(MobileOrderListDto mobileOrderListDto);

    /**
     * 没有支付的订单
     *
     * @return
     */
    List<OrderPo> getNotPayOrder();

    /**
     * huoqu dingdan
     *
     * @param comeFrom
     * @return
     */
    List<OrderPo> getOrderByComeFrom(String comeFrom);

    List<OrderPo> queryOrderByCustomerIdAndStatus(String customerId, String customPhone);

    /**
     * 按照电话查询
     *
     * @param searchInfo
     * @return 最新的订单
     */
    OrderPo getLastByPhone(String searchInfo);

    /**
     * 获取需要推送的订单
     *
     * @return
     */
    List<OrderPo> needPushOrder();

    /**
     * 查询美团没有完成的订单
     *
     * @return
     */
    List<OrderPo> getMtNotFullFillOrderList();

    /**
     * @param shopStsXcxDto
     * @return 统计门店的销售金额
     */
    ShopStsXcxVo shopMoneySts(ShopStsXcxDto shopStsXcxDto);

    /**
     * 按照天分析金额
     *
     * @param shopStsXcxDto
     */
    StsAllInfo orderMoneySts(ShopStsXcxDto shopStsXcxDto);

    /**
     * @param shopStsXcxDto
     * @return 洗鞋工厂的数据统计
     */
    StsAllInfo orderWashShopSts(ShopStsXcxDto shopStsXcxDto);

    /**
     * @param shopStsXcxDto
     * @return 统计洗鞋数量
     */
    StsAllInfo orderWashShoeSts(ShopStsXcxDto shopStsXcxDto);

    /**
     * @param shopStsXcxDto
     * @return 订单的列表
     */
    Page<OrderDetailVo> recommendPageList(ShopStsXcxDto shopStsXcxDto);

    /**
     * 查询抖音已核销，可以分账的订单
     * @return
     */
    List<OrderPo> queryDyVerification();

}
